package com.jdwx.opengl.kotlin
import kotlinx.coroutines.*
import kotlin.concurrent.thread

fun main(){
    GlobalScope.launch { // 在后台启动一个新的协程并继续
        delay(1000L) // 非阻塞的等待 1 秒钟（默认时间单位是毫秒）
        println("World!") // 在延迟后打印输出
    }
    println("Hello,") // 协程已在等待时主线程还在继续
    Thread.sleep(2000L) // 阻塞主线程 2 秒钟来保证 JVM 存活
    println("Hello2,") // 协程已在等待时主线程还在继续

    runBlocking {     // 但是这个表达式阻塞了主线程
        delay(2000L)  // ……我们延迟 2 秒来保证 JVM 的存活
    }

    thread { // 在后台启动一个新的协程并继续
        //delay(2000L) // 非阻塞的等待 1 秒钟（默认时间单位是毫秒）
        println("World!") // 在延迟后打印输出
    }
    fun main1() = runBlocking<Unit> { // 开始执行主协程
        GlobalScope.launch { // 在后台启动一个新的协程并继续
            delay(1000L)
            println("World!")
        }
        println("Hello,") // 主协程在这里会立即执行
        delay(2000L)      // 延迟 2 秒来保证 JVM 存活

    }
    main1();

    fun main2() = runBlocking {
        repeat(100_000) { // 启动大量的协程
            launch {
                delay(1000L)
                print(".")
            }
        }
    }
  //  main2()
}
